﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using TVH.Web.Code;
using TVH.Comum;

namespace TVH.Cadastro
{
    public partial class Categoria : BasePage
    {
        Persistencia.PerCategoriaProduto persistencia = new Persistencia.PerCategoriaProduto();
        
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                CarregarCombo();
            }
            
            if (Handler.GridAction == "Detalhar")
            {
                var id = Handler.ModelID.Value;
                var item = persistencia.Obter(id);

                PopularTela(item);

                txtDescricao.Attributes["readonly"] = "readonly";
                ddlCategoriaPai.Attributes["readonly"] = "readonly";
                btnSalvar.Visible = false;
            }
            else if (Handler.GridAction == "Editar")
            {
                
                var id = Handler.ModelID.Value;
                var item = persistencia.Obter(id);

                PopularTela(item);
            }

            if (!IsPostBack) return;
        }

        private void PopularTela(Entidade.CategoriaProduto item)
        {
            hdnID.Value = item.Id.ToString();
            txtDescricao.Text = item.Descricao;
            ddlCategoriaPai.SelectedValue = item.IdCategoriaPai.ToString();
            txtOrdem.Text = item.Ordem.ToString();
        }

        private void CarregarCombo()
        {
            ddlCategoriaPai.DataSource = persistencia.ObterLista();
            ddlCategoriaPai.DataTextField = "Descricao";
            ddlCategoriaPai.DataValueField = "ID";
            ddlCategoriaPai.DataBind();
        }



        public void btnSalvar_Click(object sender, EventArgs e)
        {
            try
            {
                if (string.IsNullOrEmpty(hdnID.Value))
                {
                    var entidade = PopularEntidade();
                    persistencia.Inserir(entidade);
                }
                else
                {
                    var entidade = PopularEntidade();
                    entidade.Id = Convert.ToInt32(hdnID.Value);
                    persistencia.Alterar(entidade);
                }
                ExibirMensagemSucesso("Categoria salva com sucesso!");
            }
            catch (Exception ex)
            {
                ExibirMensagemErro("Erro ao salvar categoria.", ex);
            }
        }

        private Entidade.CategoriaProduto PopularEntidade()
        {
            return new Entidade.CategoriaProduto()
                    {
                        Descricao = txtDescricao.Text,
                        IdCategoriaPai = ddlCategoriaPai.SelectedValue == "0" ? null
                        : Convert.ToInt32(ddlCategoriaPai.SelectedValue).ToNullable(),
                        Ordem = string.IsNullOrEmpty(txtOrdem.Text) ? null : Convert.ToInt32(txtOrdem.Text).ToNullable()
                    };
        }
    }
}